Coffman条件 Coffman conditions
相互排他(Mutual Exclusion)
ある並行プロセスがリソースに対して排他的な権利をどの時点においても保持している
排他制御がなければそもそもデッドロックは発生しない
条件待ち(Mutual Exclusion)
ある並行プロセスがリソース保持と追加のリソース待ちを同時に行っている
実行前に必要なリソースをすべて確保しておけばデッドロックは発生しない
だれもリソースを使っていない時のみ要求する(追加のリソース待ちが発生しない)
横取り不可(No preemption)
ある並行プロセスによって保持されているリソースがそのプロセスによってのみ解放される
横から解放できればデッドロックは発生しない
デッドロック発生したとき、対処的に片方殺したらデッドロックは解消する
循環待ち(Circular wait)
ある並行プロセス(P1)は他の連なっている並行プロセス(P2)を待たなければならない。またP2はP1を待っている
リソースに番号がありその番号順でしか確保できないのであればデッドロックは起きない